﻿Imports Negocio
Imports Servicios
Imports Excepciones

Public Class frmConsultaProyectos

    Protected Overrides Sub PreLoad()
        Me.Icon = Icon.FromHandle(Global.SIPRO.My.Resources.Resources.projects.GetHicon())
    End Sub

    Private Sub frmConsultaProyectos_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        dtFecha.Value = Nothing

        Try
            cbUsuarios.FirstBlankItem = True
            cbUsuarios.DataSource = GesUsuarios.Consultar(Nothing, True)

            cbPrioridad.FirstBlankItem = True
            cbPrioridad.DataSource = System.Enum.GetValues(GetType(Nivel))

        Catch ex As Exception
            My.Application.HandlerException(ex)
            Me.Close()
        End Try

        Search()
    End Sub

    Sub Search()

        Try
            Dim usu As New Usuario()
            usu.OID = Nothing
            If TypeOf cbUsuarios.SelectedItem Is Usuario Then
                usu = DirectCast(cbUsuarios.SelectedItem, Usuario)
            End If

            Dim prioridad As Nivel = Nothing
            If TypeOf cbPrioridad.SelectedItem Is Nivel Then
                prioridad = DirectCast(cbPrioridad.SelectedItem, Nivel)
            End If

            Dim proyectos As New List(Of Proyecto)
            proyectos = GesProyectos.Consultar(txtTitulo.Text, dtFecha.Value, usu, prioridad)
            dgvProyectos.DataSource = proyectos

        Catch ex As Exception
            My.Application.HandlerException(ex)
            Me.Close()
        End Try
    End Sub

    Private Sub btnBuscar_Click(sender As System.Object, e As System.EventArgs) Handles btnBuscar.Click
        If MyBase.ValidateForm() Then
            Search()
        End If
    End Sub

    Private Sub btnCerrar_Click(sender As System.Object, e As System.EventArgs) Handles btnCerrar.Click
        Me.Close()
    End Sub

    Private Sub dgvProyectos_DoubleClick(sender As System.Object, e As System.EventArgs) Handles dgvProyectos.DoubleClick
        If dgvProyectos.Rows.Count > 0 AndAlso TypeOf dgvProyectos.CurrentRow.DataBoundItem Is Proyecto Then
            Dim Proy As Proyecto = DirectCast(dgvProyectos.CurrentRow.DataBoundItem, Proyecto)
            Dim f As New frmABMProyecto(Proy)
            If f.ShowDialog = DialogResult.OK Then
                Search()
            End If
        Else
            My.Application.HandlerException(New ItemSelectRequiredException())
        End If
    End Sub

    Private Sub btnNuevo_Click(sender As System.Object, e As System.EventArgs) Handles btnNuevo.Click
        Dim f = New frmABMProyecto
        If f.ShowDialog = DialogResult.OK Then
            Search()
        End If
    End Sub

    Private Sub btnEliminar_Click(sender As System.Object, e As System.EventArgs) Handles btnEliminar.Click
        If dgvProyectos.Rows.Count > 0 AndAlso TypeOf dgvProyectos.CurrentRow.DataBoundItem Is Proyecto Then
            If MessageExt.Show(GesIdiomas.TraduceMensaje("MSGPROY001").ToString, MessageBoxButtons.OKCancel) = DialogResult.OK Then                
                Dim Proy As Proyecto = DirectCast(dgvProyectos.CurrentRow.DataBoundItem, Proyecto)
                Try
                    GesProyectos.Eliminar(Proy)
                    Search()
                Catch ex As ProjectTaskDeleteException
                    If MessageExt.Show(GesIdiomas.TraduceMensaje(ex.Code).ToString, MessageBoxButtons.OKCancel) = DialogResult.OK Then
                        GesProyectos.Eliminar(Proy, False)
                        Search()
                    End If
                Catch ex As Exception
                    My.Application.HandlerException(ex)
                End Try
            End If
        Else
            My.Application.HandlerException(New ItemSelectRequiredException())
        End If
    End Sub

    Private Sub btnTareas_Click(sender As System.Object, e As System.EventArgs) Handles btnTareas.Click
        If dgvProyectos.Rows.Count > 0 AndAlso TypeOf dgvProyectos.CurrentRow.DataBoundItem Is Proyecto Then
            Dim Proy As Proyecto = DirectCast(dgvProyectos.CurrentRow.DataBoundItem, Proyecto)
            Try
                Dim f As New frmConsultaTareas(Proy)
                f.ShowDialog()
            Catch ex As Exception
                My.Application.HandlerException(ex)
            End Try
        Else
            My.Application.HandlerException(New ItemSelectRequiredException())
        End If
    End Sub

    Private Sub btnRecursos_Click(sender As System.Object, e As System.EventArgs) Handles btnRecursos.Click
        If dgvProyectos.Rows.Count > 0 AndAlso TypeOf dgvProyectos.CurrentRow.DataBoundItem Is Proyecto Then
            Dim Proy As Proyecto = DirectCast(dgvProyectos.CurrentRow.DataBoundItem, Proyecto)
            Try
                Dim recursos As List(Of Recurso) = GesProyectos.ObtenerRecursos(Proy)
                Dim f As New frmListaRecurso(recursos, Me.Tag)
                If f.ShowDialog() = Windows.Forms.DialogResult.OK Then
                    GesProyectos.ActualizarRecursos(Proy, recursos)
                End If
            Catch ex As Exception
                My.Application.HandlerException(ex)
            End Try
        Else
            My.Application.HandlerException(New ItemSelectRequiredException())
        End If
    End Sub

    Private Sub btnReporte_Click(sender As System.Object, e As System.EventArgs) Handles btnReporte.Click
        If dgvProyectos.Rows.Count > 0 AndAlso TypeOf dgvProyectos.CurrentRow.DataBoundItem Is Proyecto Then
            Dim Proy As Proyecto = DirectCast(dgvProyectos.CurrentRow.DataBoundItem, Proyecto)
            Try
                Dim f As New frmReportProject(Proy)
                f.Show()
            Catch ex As Exception
                My.Application.HandlerException(ex)
            End Try
        Else
            My.Application.HandlerException(New ItemSelectRequiredException())
        End If
    End Sub
End Class